<?php
namespace App\Api\Phalapialiyunsms;
use PhalApi\Api;
use App\Domain\Phalapialiyunsms\Main as SmsDomain;

/**
 * 阿里云短信插件
 * @author dogstar
 */
class Main extends Api {
    public function getRules()
    {
        return array(
            'aliyunSendSms' => array(
                'PhoneNumbers' => array('name' => 'PhoneNumbers', 'require' => true, 'desc' => '接收短信的手机号码。国内短信：11位手机号码，例如15951955195。国际/港澳台消息：国际区号+号码，例如85200000000。'),
                'SignName' => array('name' => 'SignName', 'require' => true, 'desc' => '短信签名名称。可在阿里云控制台签名管理页面签名名称一列查看。例如：阿里云'),
                'TemplateCode' => array('name' => 'TemplateCode', 'require' => true, 'desc' => '短信模板ID。可在阿里云控制台模板管理页面模板CODE一列查看。例如：SMS_153055065'),
                //'OutId' => array('name' => 'OutId', 'desc' => '外部流水扩展字段。'),
                'TemplateParam' => array('name' => 'TemplateParam', 'type' => 'array', 'format' => 'json', 'desc' => '短信模板变量对应的实际值，JSON格式。例如：{"code":"1111"}'),
            ),
            'aliyunQuerySendDetails' => array(
                'CurrentPage' => array('name' => 'CurrentPage', 'type' => 'int', 'min' => 1, 'default' => 1, 'desc' => '分页查看发送记录，指定发送记录的的当前页码。'),
                'PageSize' => array('name' => 'PageSize', 'type' => 'int', 'min' => 1, 'max' => 50, 'default' => 10, 'desc' => '分页查看发送记录，指定每页显示的短信记录数量。取值范围为1~50。'),
                'PhoneNumber' => array('name' => 'PhoneNumber', 'require' => true, 'desc' => '接收短信的手机号码。格式：<ul><li>国内短信：11位手机号码，例如15900000000。</li><li>国际/港澳台消息：国际区号+号码，例如85200000000。</li></ul>'),
                'SendDate' => array('name' => 'SendDate', 'require' => true, 'desc' => '短信发送日期，支持查询最近30天的记录。格式为yyyyMMdd，例如20181225。'),
            ),
        );
    }
    
    /**
     * 阿里云发送短信接口
     * @desc 通过阿里云的<a style="color:red;display:inline;" href="https://help.aliyun.com/document_detail/101414.html?spm=a2c4g.11186623.6.616.3caf2e798CoiXF">SendSms</a>发送短信。
     * @return string BizId 发送回执ID，可根据该ID在接口QuerySendDetails中查询具体的发送状态。
     * @return string Code 请求状态码。返回OK代表请求成功。其他错误码详见<a href="https://help.aliyun.com/document_detail/101346.html?spm=a2c4g.11186623.2.14.69ba56e0biijqs">错误码列表</a>。
     * @return string Message 状态码的描述。
     * @return string RequestId 请求ID。
     */
    public function aliyunSendSms()
    {
        $sms = new SmsDomain();
        $smsRs = $sms->aliyunSendSms($this->PhoneNumbers, $this->SignName, $this->TemplateCode, $this->TemplateParam);
        return $smsRs;
    }
    
    /**
     * 阿里云查看短信发送记录和发送状态
     * @desc 通过阿里云的<a href="https://help.aliyun.com/document_detail/102352.html?spm=a2c4g.11186623.6.618.7fc6202aeksfQD">QuerySendDetails</a>接口查看短信发送记录和发送状态。
     * @return string Code 请求状态码。返回OK代表请求成功。其他错误码详见<a href="https://help.aliyun.com/document_detail/101346.html?spm=a2c4g.11186623.2.14.69ba56e0biijqs">错误码列表</a>。
     * @return string Message 状态码的描述。
     * @return string RequestId 请求ID。
     * @return object SmsSendDetailDTOs 短信发送明细。
     * @return string TotalCount 短信发送总条数。
     */
    public function aliyunQuerySendDetails() {
        $sms = new SmsDomain();
        $smsRs = $sms->aliyunQuerySendDetails($this->CurrentPage, $this->PageSize, $this->PhoneNumber, $this->SendDate);
        return $smsRs;
    }
}

